package com.woniu.hismanger.api;
import com.woniu.hismanger.param.*;
import com.woniu.param.PageParam;
import com.woniu.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.multipart.MultipartFile;


@Api(tags = "管理聚合接口")
@FeignClient( value = "manager",
        contextId = "manager",
        path = "/manager")
public interface MangerApi {

    @PostMapping("/getAllOffice")
    @ApiOperation("根据条件进行科室搜索")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "officeParam",
                    value = "查询条件",
                    required = false,
                    dataType = "HisOfficeParam" )
    })
    Result DepartmentDisplay(@RequestBody HisOfficeParam officeParam);



    @PostMapping("/CreatOffice")
    @ApiOperation("增加科室")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "hisCreateOfficeParam",
                    value = "增加条件",
                    required = false,
                    dataType = "HisCreateOfficeParam" )
    })
    Result CreatOffice (@RequestBody HisCreateOfficeParam hisCreateOfficeParam);

    @PostMapping("/getStationDisplay")
    @ApiOperation("根据当前科室搜索当前员工")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "queryStationParam",
                    value = "分页条件",
                    required = false,
                    dataType = "HisQueryStationParam" )
    })
    Result DepartmentDetail(@RequestBody HisQueryStationParam queryStationParam);

    @PostMapping("/getStaffDisplay")
    @ApiOperation("根据当前员工查详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "queryStaffParam",
                    value = "分页条件",
                    required = false,
                    dataType = "HisQueryStaffParam" )
    })

    Result staffDisplay(@RequestBody HisQueryStaffParam queryStaffParam);



    @PostMapping("/AddStaff")
    @ApiOperation("添加员工")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "hisStaffParam",
                    value = "添加信息",
                    required = false,
                    dataType = "HisStaffParam" )
    })
    Result AddStaff(@RequestBody HisStaffParam hisStaffParam);


    @PostMapping("/upLode")
    @ApiOperation("上传头像")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "hisStaffParam",
                    value = "上次信息",
                    required = false,
                    dataType = "HisStaffParam" )
    })
    Result upLode(MultipartFile File, String name);

    @PostMapping("/OrganizationWork")
    @ApiOperation("安排排班")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "createSchedulingParam",
                    value = "查询条件",
                    required = false,
                    dataType = "HisCreateSchedulingParam" )
    })
    Result OrganizationWork(@RequestBody HisCreateSchedulingParam createSchedulingParam);


    @PostMapping("/DeleteRoster")
    @ApiOperation("删除排班")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "schedulingParam",
                    value = "查询条件",
                    required = false,
                    dataType = "HisDelSchedulingParam")
    })
     Result DeleteRoster(@RequestBody HisDelSchedulingParam schedulingParam);


    @PostMapping("/WordInformation")
    @ApiOperation("病房信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "",
                    value = "",
                    required = false,
                    dataType = "")
    })
     Result WardInformation (@RequestBody PageParam pageParam);

    @PostMapping("/CreateWords")
    @ApiOperation("新增病床")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "hisBedAddParam",
                    value = "病床信息",
                    required = false,
                    dataType = "HisBedAddParam")
    })
     Result CreateWords(@RequestBody HisBedAddParam hisBedAddParam);


 @PostMapping("/NurseInformation")
 @ApiOperation("查询所有护士")
 @ApiImplicitParams({
         @ApiImplicitParam(name = "",
                 value = "",
                 required = false,
                 dataType = "")
    })
      Result NurseInformation ();





    @PostMapping("/hisBedSetParam")
    @ApiOperation("查询当前房间的床位")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "hisBedSetParam",
                    value = "查询条件",
                    required = false,
                    dataType = "HisBedSetParam")
    })
    Result BedInformation(@RequestBody HisBedSetParam hisBedSetParam);




    @PostMapping("/WorkInformation")
    @ApiOperation("查询当前人的排班信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "hisCreateSchedulingParam",
                    value = "查询条件",
                    required = false,
                    dataType = "HisCreateSchedulingParam")
    })
    Result WorkInformation (@RequestBody HisCreateSchedulingParam hisCreateSchedulingParam);




}
